return fetched;
}
-/**
- * gdk_event_get_string:
- * @event: a #GdkEvent
- * @string: (out) (transfer none): return location for the string
- *
- * Extracts a string from an event. The string is an
- * approximation of the keyval in a key event.
- *
- * Returns: %TRUE on success, otherwise %FALSE
- **/
-gboolean
-gdk_event_get_string (const GdkEvent *event,
- const char **string)
-{
- gboolean fetched = TRUE;
-
- switch ((guint) event->any.type)
- {
- case GDK_KEY_PRESS:
- case GDK_KEY_RELEASE:
- *string = event->key.string;
- break;
- default:
- *string = NULL;
- fetched = FALSE;
- break;
- }
-
- return fetched;
-}
-
/**
* gdk_event_get_key_is_modifier:
* @event: a #GdkEvent
GdkModifierType state;
guint keyval;
guint16 keycode;
- const char *string;
type = gdk_event_get_event_type ((GdkEvent *)key);
gdk_event_get_state ((GdkEvent *)key, &state);
gdk_event_get_keyval ((GdkEvent *)key, &keyval);
gdk_event_get_keycode ((GdkEvent *)key, &keycode);
- gdk_event_get_string ((GdkEvent *)key, &string);
if (type == GDK_KEY_PRESS)
event->type = ATK_KEY_EVENT_PRESS;
event->state = state;
event->keyval = keyval;
- if (string && string[0] &&
- (state & GDK_CONTROL_MASK ||
- g_unichar_isgraph (g_utf8_get_char (string))))
- event->string = (char *) string;
- else
- event->string = gdk_keyval_name (keyval);
-
- event->length = strlen (string);
+ event->string = gdk_keyval_name (keyval);
+ event->length = strlen (event->string);
event->keycode = keycode;
event->timestamp = gdk_event_get_time ((GdkEvent *)key);
}
static gboolean
should_trigger_location_entry (GtkFileChooserWidget *impl,
guint keyval,
- GdkModifierType state)
+ GdkModifierType state,
+ const char **string)
{
GdkModifierType no_text_input_mask;
no_text_input_mask =
gtk_widget_get_modifier_mask (GTK_WIDGET (impl), GDK_MODIFIER_INTENT_NO_TEXT_INPUT);
- if ((keyval == GDK_KEY_slash
- || keyval == GDK_KEY_KP_Divide
- || keyval == GDK_KEY_period
-#ifdef G_OS_UNIX
- || keyval == GDK_KEY_asciitilde
-#endif
- ) && !(state & no_text_input_mask))
- return TRUE;
+ if (state & no_text_input_mask)
+ return FALSE;
- return FALSE;
+ switch (keyval)
+ {
+ case GDK_KEY_slash:
+ case GDK_KEY_KP_Divide:
+ *string = "/";
+ return TRUE;
+
+ case GDK_KEY_period:
+ *string = ".";
+ return TRUE;
+
+ case GDK_KEY_asciitilde:
+ *string = "~";
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
}
/* Handles key press events on the file list, so that we can trap Enter to
GtkFileChooserWidget *impl = (GtkFileChooserWidget *) data;
GtkFileChooserWidgetPrivate *priv = impl->priv;
const GdkEvent *event;
+ const char *string;
event = gtk_get_current_event ();
- if (should_trigger_location_entry (impl, keyval, state) &&
+ if (should_trigger_location_entry (impl, keyval, state, &string) &&
(priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER))
{
- const char *string;
-
- gdk_event_get_string ((GdkEvent *)event, &string);
location_popup_handler (impl, string);
return GDK_EVENT_STOP;
}
GtkFileChooserWidgetPrivate *priv = impl->priv;
gboolean handled = FALSE;
GdkEvent *event;
+ const char *string;
event = gtk_get_current_event ();
- if (should_trigger_location_entry (impl, keyval, state))
+ if (should_trigger_location_entry (impl, keyval, state, &string))
{
if (priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
- const char *string;
-
- gdk_event_get_string (event, &string);
location_popup_handler (impl, string);
handled = TRUE;
}